<script setup lang="ts">
	import { http } from '@/utils/http';
	import { onMounted, ref } from 'vue';
	const info = ref({});
	const { safeAreaInsets } = uni.getSystemInfoSync()
	const getinfo = async () => {
		const res = await http({
			url: "/member/profile",
			method: 'GET'
		})
		console.log(res)
		info.value = res.result
	}
	const key = ref({});
	key.value = JSON.parse(uni.getStorageSync("key"));
	const tempfilepath = ref({});
	const onAvatarChange = () => {
		uni.chooseMedia({
			count: 1,
			mediaType: ['image'],
			success: async (res) => {

				const { tempFilePath } = res.tempFiles[0]
				// 文件上传
				uni.uploadFile({
					url: "/member/profile/avatar",
					name: "file",
					filePath: tempFilePath,
					success: (res) => {
						if (res.statusCode == 200) {
							console.log(res)
							const avator = JSON.parse(res.data).result;
							info.value.avatar = avator.avatar;
							key.value.avatar = avator.avatar;
							uni.setStorageSync("key", JSON.stringify(key.value))
						}

					}
				})
			}
		})
	}
	const xgcs = (e) => {
		console.log(e)
		info.value.fullLocation = e.detail.value.join(" ");
		console.log(info.value.fullLocation)
		info.value.fullLocationCode = e.detail.code
		info.value.provinceCode = info.value.fullLocationCode[0];
		info.value.cityCode = info.value.fullLocationCode[1];
		info.value.countyCode = info.value.fullLocationCode[2];
	}
	const baocun = async () => {
		const res = await http({
			url: "/member/profile",
			method: "PUT",
			data: info.value
		})
		console.log(res);
		res.result.token = key.value.token;
		uni.setStorageSync("key", JSON.stringify(res.result))
		uni.reLaunch({
			url: "/pages/my/my"
		})
	}
	const xgnc = (e) => {
		console.log(e)
		info.value.nickname = e.detail.value
	}
	const xgnc1 = (e) => {
		this.$nextTick(() => {
			console.log(e)
			info.value.profession = e.detail.value

		})
	}

	const onradio = (e) => {
		console.log(e)
		info.value.gender = e.detail.value
	}
	const birthchange = (e) => {
		console.log(e)
		info.value.birthday = e.detail.value
	}
	onMounted(() => {
		getinfo()
	})
</script>

<template>
	<view class="viewport">
		<view class="navbar" :style="{paddingTop:safeAreaInsets?.top+'px'}">
			<navigator open-type="navigateBack" class="back icon-left" hover-class="none"></navigator>
			<view class="title">
				个人信息
			</view>

		</view>
		<view class="avatar">
			<view class="avatar-content">
				<image :src="info.avatar" mode="aspectFill" class="image"></image>
				<text class="text" @click="onAvatarChange">点击修改头像</text>
			</view>

		</view>
		<view class="form">
			<view class="form-content">
				<view class="form-item">
					<text class="label">账号</text>
					<text class="account">{{info.account}}</text>
				</view>
				<view class="form-item">
					<text class="label">昵称</text>
					<input class="input" type="text" @input="xgnc" placeholder="请填写昵称" v-model="info.nickname"
						/>
				</view>
				<view class="form-item">
					<text class="label">性别</text>
					<radio-group @change="onradio">
						<label class="radio">
							<radio value="男" color="#27ba9b" :checked="info.gender == '男'"></radio>男
						</label>
						<label class="radio">
							<radio value="女" color="#27ba9b" :checked="info.gender == '女'"></radio>女
						</label>
					</radio-group>
				</view>
				<view class="form-item">
					<text class="label">生日</text>
					<picker class="picker" mode="date" start="1900-01-01" :end="new Date()" @change="birthchange"
						:value="info.birthday">
						<view v-if="info.birthday">
							{{info.birthday}}
						</view>
						<view class="placeholder" v-else>
							请选择日期
						</view>
					</picker>
				</view>
				<view class="form-item">
					<text class="label">城市</text>
					<picker class="picker" mode="region" :value="info.fullLocation.split('')" @change="xgcs">
						<view v-if="false">广东省广州市天河区
						</view>
						<view v-if="info.fullLocation">{{ info.fullLocation }}</view>
						<view class="placeholder" v-else>
							请选择城市
						</view>

					</picker>
				</view>
				<view class="form-item">
					<text class="label">职业</text>
					<input class="input" type="text" @input="xgnc1" v-model="info.profession" placeholder="请填写职业"
						 />
				</view>
			</view>
			<button class="form-button" @click="baocun">保存</button>
		</view>
	</view>
</template>

<style lang="scss">
	page {
		background-color: #f4f4f4;
	}

	.viewport {
		display: flex;
		flex-direction: column;
		height: 100%;
		background-image: url(https://pcapi-xiaotuxian-front-devtest.itheima.net/miniapp/images/order_bg.png);
		background-size: auto 420rpx;
		background-repeat: no-repeat;
	}

	// 导航栏
	.navbar {
		position: relative;

		.title {
			height: 40px;
			display: flex;
			justify-content: center;
			align-items: center;
			font-size: 16px;
			font-weight: 500;
			color: #fff;
		}

		.back {
			position: absolute;
			height: 40px;
			width: 40px;
			left: 0;
			font-size: 20px;
			color: #fff;
			display: flex;
			justify-content: center;
			align-items: center;
		}
	}

	// 头像
	.avatar {
		text-align: center;
		width: 100%;
		height: 260rpx;
		display: flex;
		flex-direction: column;
		justify-content: center;
		align-items: center;

		.image {
			width: 160rpx;
			height: 160rpx;
			border-radius: 50%;
			background-color: #eee;
		}

		.text {
			display: block;
			padding-top: 20rpx;
			line-height: 1;
			font-size: 26rpx;
			color: #fff;
		}
	}

	// 表单
	.form {
		background-color: #f4f4f4;

		&-content {
			margin: 20rpx 20rpx 0;
			padding: 0 20rpx;
			border-radius: 10rpx;
			background-color: #fff;
		}

		&-item {
			display: flex;
			height: 96rpx;
			line-height: 46rpx;
			padding: 25rpx 10rpx;
			background-color: #fff;
			font-size: 28rpx;
			border-bottom: 1rpx solid #ddd;

			&:last-child {
				border: none;
			}

			.label {
				width: 180rpx;
				color: #333;
			}

			.account {
				color: #666;
			}

			.input {
				flex: 1;
				display: block;
				height: 46rpx;
			}

			.radio {
				margin-right: 20rpx;
			}

			.picker {
				flex: 1;
			}

			.placeholder {
				color: #808080;
			}
		}

		&-button {
			height: 80rpx;
			text-align: center;
			line-height: 80rpx;
			margin: 30rpx 20rpx;
			color: #fff;
			border-radius: 80rpx;
			font-size: 30rpx;
			background-color: #27ba9b;
		}
	}
</style>